<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>xeokit Example</title>
    <link href="../css/pageStyle.css" rel="stylesheet"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/js/all.min.js"></script>
</head>
<body>
<input type="checkbox" id="info-button"/>
<label for="info-button" class="info-button"><i class="far fa-3x fa-question-circle"></i></label>
<canvas id="myCanvas"></canvas>
<div class="slideout-sidebar">
    <img class="info-icon" src="../../assets/images/stl_logo.png"/>
    <h1>STLLoaderPlugin</h1>
    <h2>Loading an STL model from pre-loaded data</h2>
    <h3>Components used</h3>
    <ul>
        <li>
            <a href="../../docs/class/src/viewer/Viewer.js~Viewer.html"
               target="_other">Viewer</a>
        </li>
        <li>
            <a href="../../docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html"
               target="_other">STLLoaderPlugin</a>
        </li>
    </ul>
</div>
</body>
<script type="module">

    //------------------------------------------------------------------------------------------------------------------
    // Import the modules we need for this example
    //------------------------------------------------------------------------------------------------------------------

    import {Viewer, STLLoaderPlugin} from "../../dist/xeokit-sdk.min.es.js";

    //------------------------------------------------------------------------------------------------------------------
    // Create a Viewer
    //------------------------------------------------------------------------------------------------------------------

    const viewer = new Viewer({
        canvasId: "myCanvas"
    });

    //------------------------------------------------------------------------------------------------------------------
    // Load STL model
    //------------------------------------------------------------------------------------------------------------------

    const stlLoader = new STLLoaderPlugin(viewer);

    loadSTL("../../assets/models/stl/binary/spurGear.stl", (stlData) => {

        const sceneModel = stlLoader.load({
            id: "myModel",
            stl: stlData,
            smoothNormals: true
        });

        sceneModel.on("loaded", () => {
            viewer.cameraFlight.jumpTo(sceneModel);
            viewer.scene.on("tick", () => {
                viewer.camera.orbitYaw(0.4);
            })
        });
    })

    function loadSTL(src, ok, error) {
        const request = new XMLHttpRequest();
        request.overrideMimeType("application/json");
        request.open('GET', src, true);
        request.responseType = 'arraybuffer';
        request.onreadystatechange = function () {
            if (request.readyState === 4) {
                if (request.status === 200) {
                    ok(request.response);
                } else if (error) {
                    error(request.statusText);
                }

            }
        };
        request.send(null);
    }

</script>
</html>